/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

京东云解析OpenAPI接口
京东云解析OpenAPI接口

OpenAPI spec version: v2
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef DomainserviceClient_h
#define DomainserviceClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKDomainservice/DomainserviceApiModel.h>

@interface DomainserviceClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    deleteUserViewIP sync request
    @param deleteUserViewIPRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteUserViewIPResponse` the request response data model
    */
    -(NSDictionary*) deleteUserViewIPSyncWithRequest:(DomainserviceDeleteUserViewIPRequest*) deleteUserViewIPRequest;

    -(void)deleteUserViewIPAsyncWithRequest:(DomainserviceDeleteUserViewIPRequest*) deleteUserViewIPRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDeleteUserViewIPResponse* _Nullable deleteUserViewIPResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeDomainQueryCount sync request
    @param describeDomainQueryCountRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDomainQueryCountResponse` the request response data model
    */
    -(NSDictionary*) describeDomainQueryCountSyncWithRequest:(DomainserviceDescribeDomainQueryCountRequest*) describeDomainQueryCountRequest;

    -(void)describeDomainQueryCountAsyncWithRequest:(DomainserviceDescribeDomainQueryCountRequest*) describeDomainQueryCountRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeDomainQueryCountResponse* _Nullable describeDomainQueryCountResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeDomainQueryTraffic sync request
    @param describeDomainQueryTrafficRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDomainQueryTrafficResponse` the request response data model
    */
    -(NSDictionary*) describeDomainQueryTrafficSyncWithRequest:(DomainserviceDescribeDomainQueryTrafficRequest*) describeDomainQueryTrafficRequest;

    -(void)describeDomainQueryTrafficAsyncWithRequest:(DomainserviceDescribeDomainQueryTrafficRequest*) describeDomainQueryTrafficRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeDomainQueryTrafficResponse* _Nullable describeDomainQueryTrafficResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyMonitorStatus sync request
    @param modifyMonitorStatusRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyMonitorStatusResponse` the request response data model
    */
    -(NSDictionary*) modifyMonitorStatusSyncWithRequest:(DomainserviceModifyMonitorStatusRequest*) modifyMonitorStatusRequest;

    -(void)modifyMonitorStatusAsyncWithRequest:(DomainserviceModifyMonitorStatusRequest*) modifyMonitorStatusRequest
    completionHandler:(void(^)(int statusCode,DomainserviceModifyMonitorStatusResponse* _Nullable modifyMonitorStatusResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeActionLog sync request
    @param describeActionLogRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeActionLogResponse` the request response data model
    */
    -(NSDictionary*) describeActionLogSyncWithRequest:(DomainserviceDescribeActionLogRequest*) describeActionLogRequest;

    -(void)describeActionLogAsyncWithRequest:(DomainserviceDescribeActionLogRequest*) describeActionLogRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeActionLogResponse* _Nullable describeActionLogResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createResourceRecord sync request
    @param createResourceRecordRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createResourceRecordResponse` the request response data model
    */
    -(NSDictionary*) createResourceRecordSyncWithRequest:(DomainserviceCreateResourceRecordRequest*) createResourceRecordRequest;

    -(void)createResourceRecordAsyncWithRequest:(DomainserviceCreateResourceRecordRequest*) createResourceRecordRequest
    completionHandler:(void(^)(int statusCode,DomainserviceCreateResourceRecordResponse* _Nullable createResourceRecordResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyDomain sync request
    @param modifyDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyDomainResponse` the request response data model
    */
    -(NSDictionary*) modifyDomainSyncWithRequest:(DomainserviceModifyDomainRequest*) modifyDomainRequest;

    -(void)modifyDomainAsyncWithRequest:(DomainserviceModifyDomainRequest*) modifyDomainRequest
    completionHandler:(void(^)(int statusCode,DomainserviceModifyDomainResponse* _Nullable modifyDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    batchSetResourceRecords sync request
    @param batchSetResourceRecordsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `batchSetResourceRecordsResponse` the request response data model
    */
    -(NSDictionary*) batchSetResourceRecordsSyncWithRequest:(DomainserviceBatchSetResourceRecordsRequest*) batchSetResourceRecordsRequest;

    -(void)batchSetResourceRecordsAsyncWithRequest:(DomainserviceBatchSetResourceRecordsRequest*) batchSetResourceRecordsRequest
    completionHandler:(void(^)(int statusCode,DomainserviceBatchSetResourceRecordsResponse* _Nullable batchSetResourceRecordsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeMonitorTarget sync request
    @param describeMonitorTargetRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMonitorTargetResponse` the request response data model
    */
    -(NSDictionary*) describeMonitorTargetSyncWithRequest:(DomainserviceDescribeMonitorTargetRequest*) describeMonitorTargetRequest;

    -(void)describeMonitorTargetAsyncWithRequest:(DomainserviceDescribeMonitorTargetRequest*) describeMonitorTargetRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeMonitorTargetResponse* _Nullable describeMonitorTargetResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createMonitorTarget sync request
    @param createMonitorTargetRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createMonitorTargetResponse` the request response data model
    */
    -(NSDictionary*) createMonitorTargetSyncWithRequest:(DomainserviceCreateMonitorTargetRequest*) createMonitorTargetRequest;

    -(void)createMonitorTargetAsyncWithRequest:(DomainserviceCreateMonitorTargetRequest*) createMonitorTargetRequest
    completionHandler:(void(^)(int statusCode,DomainserviceCreateMonitorTargetResponse* _Nullable createMonitorTargetResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createDomain sync request
    @param createDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createDomainResponse` the request response data model
    */
    -(NSDictionary*) createDomainSyncWithRequest:(DomainserviceCreateDomainRequest*) createDomainRequest;

    -(void)createDomainAsyncWithRequest:(DomainserviceCreateDomainRequest*) createDomainRequest
    completionHandler:(void(^)(int statusCode,DomainserviceCreateDomainResponse* _Nullable createDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeUserViewIP sync request
    @param describeUserViewIPRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeUserViewIPResponse` the request response data model
    */
    -(NSDictionary*) describeUserViewIPSyncWithRequest:(DomainserviceDescribeUserViewIPRequest*) describeUserViewIPRequest;

    -(void)describeUserViewIPAsyncWithRequest:(DomainserviceDescribeUserViewIPRequest*) describeUserViewIPRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeUserViewIPResponse* _Nullable describeUserViewIPResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyResourceRecordStatus sync request
    @param modifyResourceRecordStatusRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyResourceRecordStatusResponse` the request response data model
    */
    -(NSDictionary*) modifyResourceRecordStatusSyncWithRequest:(DomainserviceModifyResourceRecordStatusRequest*) modifyResourceRecordStatusRequest;

    -(void)modifyResourceRecordStatusAsyncWithRequest:(DomainserviceModifyResourceRecordStatusRequest*) modifyResourceRecordStatusRequest
    completionHandler:(void(^)(int statusCode,DomainserviceModifyResourceRecordStatusResponse* _Nullable modifyResourceRecordStatusResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyResourceRecord sync request
    @param modifyResourceRecordRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyResourceRecordResponse` the request response data model
    */
    -(NSDictionary*) modifyResourceRecordSyncWithRequest:(DomainserviceModifyResourceRecordRequest*) modifyResourceRecordRequest;

    -(void)modifyResourceRecordAsyncWithRequest:(DomainserviceModifyResourceRecordRequest*) modifyResourceRecordRequest
    completionHandler:(void(^)(int statusCode,DomainserviceModifyResourceRecordResponse* _Nullable modifyResourceRecordResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeDomains sync request
    @param describeDomainsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDomainsResponse` the request response data model
    */
    -(NSDictionary*) describeDomainsSyncWithRequest:(DomainserviceDescribeDomainsRequest*) describeDomainsRequest;

    -(void)describeDomainsAsyncWithRequest:(DomainserviceDescribeDomainsRequest*) describeDomainsRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeDomainsResponse* _Nullable describeDomainsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createMonitor sync request
    @param createMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createMonitorResponse` the request response data model
    */
    -(NSDictionary*) createMonitorSyncWithRequest:(DomainserviceCreateMonitorRequest*) createMonitorRequest;

    -(void)createMonitorAsyncWithRequest:(DomainserviceCreateMonitorRequest*) createMonitorRequest
    completionHandler:(void(^)(int statusCode,DomainserviceCreateMonitorResponse* _Nullable createMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createUserViewIP sync request
    @param createUserViewIPRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createUserViewIPResponse` the request response data model
    */
    -(NSDictionary*) createUserViewIPSyncWithRequest:(DomainserviceCreateUserViewIPRequest*) createUserViewIPRequest;

    -(void)createUserViewIPAsyncWithRequest:(DomainserviceCreateUserViewIPRequest*) createUserViewIPRequest
    completionHandler:(void(^)(int statusCode,DomainserviceCreateUserViewIPResponse* _Nullable createUserViewIPResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteUserView sync request
    @param deleteUserViewRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteUserViewResponse` the request response data model
    */
    -(NSDictionary*) deleteUserViewSyncWithRequest:(DomainserviceDeleteUserViewRequest*) deleteUserViewRequest;

    -(void)deleteUserViewAsyncWithRequest:(DomainserviceDeleteUserViewRequest*) deleteUserViewRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDeleteUserViewResponse* _Nullable deleteUserViewResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyMonitor sync request
    @param modifyMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyMonitorResponse` the request response data model
    */
    -(NSDictionary*) modifyMonitorSyncWithRequest:(DomainserviceModifyMonitorRequest*) modifyMonitorRequest;

    -(void)modifyMonitorAsyncWithRequest:(DomainserviceModifyMonitorRequest*) modifyMonitorRequest
    completionHandler:(void(^)(int statusCode,DomainserviceModifyMonitorResponse* _Nullable modifyMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeResourceRecord sync request
    @param describeResourceRecordRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeResourceRecordResponse` the request response data model
    */
    -(NSDictionary*) describeResourceRecordSyncWithRequest:(DomainserviceDescribeResourceRecordRequest*) describeResourceRecordRequest;

    -(void)describeResourceRecordAsyncWithRequest:(DomainserviceDescribeResourceRecordRequest*) describeResourceRecordRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeResourceRecordResponse* _Nullable describeResourceRecordResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeUserView sync request
    @param describeUserViewRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeUserViewResponse` the request response data model
    */
    -(NSDictionary*) describeUserViewSyncWithRequest:(DomainserviceDescribeUserViewRequest*) describeUserViewRequest;

    -(void)describeUserViewAsyncWithRequest:(DomainserviceDescribeUserViewRequest*) describeUserViewRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeUserViewResponse* _Nullable describeUserViewResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeMonitorAlarm sync request
    @param describeMonitorAlarmRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMonitorAlarmResponse` the request response data model
    */
    -(NSDictionary*) describeMonitorAlarmSyncWithRequest:(DomainserviceDescribeMonitorAlarmRequest*) describeMonitorAlarmRequest;

    -(void)describeMonitorAlarmAsyncWithRequest:(DomainserviceDescribeMonitorAlarmRequest*) describeMonitorAlarmRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeMonitorAlarmResponse* _Nullable describeMonitorAlarmResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createUserView sync request
    @param createUserViewRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createUserViewResponse` the request response data model
    */
    -(NSDictionary*) createUserViewSyncWithRequest:(DomainserviceCreateUserViewRequest*) createUserViewRequest;

    -(void)createUserViewAsyncWithRequest:(DomainserviceCreateUserViewRequest*) createUserViewRequest
    completionHandler:(void(^)(int statusCode,DomainserviceCreateUserViewResponse* _Nullable createUserViewResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeViewTree sync request
    @param describeViewTreeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeViewTreeResponse` the request response data model
    */
    -(NSDictionary*) describeViewTreeSyncWithRequest:(DomainserviceDescribeViewTreeRequest*) describeViewTreeRequest;

    -(void)describeViewTreeAsyncWithRequest:(DomainserviceDescribeViewTreeRequest*) describeViewTreeRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeViewTreeResponse* _Nullable describeViewTreeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteResourceRecord sync request
    @param deleteResourceRecordRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteResourceRecordResponse` the request response data model
    */
    -(NSDictionary*) deleteResourceRecordSyncWithRequest:(DomainserviceDeleteResourceRecordRequest*) deleteResourceRecordRequest;

    -(void)deleteResourceRecordAsyncWithRequest:(DomainserviceDeleteResourceRecordRequest*) deleteResourceRecordRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDeleteResourceRecordResponse* _Nullable deleteResourceRecordResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeMonitor sync request
    @param describeMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeMonitorResponse` the request response data model
    */
    -(NSDictionary*) describeMonitorSyncWithRequest:(DomainserviceDescribeMonitorRequest*) describeMonitorRequest;

    -(void)describeMonitorAsyncWithRequest:(DomainserviceDescribeMonitorRequest*) describeMonitorRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDescribeMonitorResponse* _Nullable describeMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteMonitor sync request
    @param deleteMonitorRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteMonitorResponse` the request response data model
    */
    -(NSDictionary*) deleteMonitorSyncWithRequest:(DomainserviceDeleteMonitorRequest*) deleteMonitorRequest;

    -(void)deleteMonitorAsyncWithRequest:(DomainserviceDeleteMonitorRequest*) deleteMonitorRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDeleteMonitorResponse* _Nullable deleteMonitorResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteDomain sync request
    @param deleteDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteDomainResponse` the request response data model
    */
    -(NSDictionary*) deleteDomainSyncWithRequest:(DomainserviceDeleteDomainRequest*) deleteDomainRequest;

    -(void)deleteDomainAsyncWithRequest:(DomainserviceDeleteDomainRequest*) deleteDomainRequest
    completionHandler:(void(^)(int statusCode,DomainserviceDeleteDomainResponse* _Nullable deleteDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    domainservice common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) domainserviceCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)domainserviceCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* DomainserviceClient_h */
